#coding: utf-8

from java import EntityMapper

def toEntity(item) :
    result = 'can.set{}{}(({})doc.get("{}"));'.format(item[2][0].upper(), item[2][1:], item[1], item[2])
    print(result)

    #gps.setDevid((String)doc.get("devid"));

def toDocument(item) :
    result = '.append("{}", can.get{}{}())'.format(item[2], item[2][0].upper(), item[2][1:])
    print(result)

    #.append("devid", can.getDevid())

def toUpdateDoc(item) :
    #Updates.set("time", can.getTime()),
    result = 'Updates.set("{}", can.get{}{}()),'.format(item[2], item[2][0].upper(), item[2][1:])
    print(result)

def toGpsStr(item) :
    #sb.append("devid:").append(devid);
    result = 'sb.append(",{}:").append({});'.format(item[2], item[2])
    print(result)

    #gps.setDevid((String)doc.get("devid"));

if __name__ == '__main__':
    str = """
    private String devid; //  String  device id
    private long hostid;  //  Long    绑定的宿主, 由于设备更换频繁, 需要这个
    private Date time;    //  Date    can的时间 (精确到s)

    private int mlight;   //  int     故障码灯状态　-1表示未知
    private int dtcNum;   //  int     动机故障码个数　-1表示未知

    private int obdType;  //  int     OBD类型 0x01 OBD II; 0x02 OBD; 0x03 OBD and OBD II; 0x04 OBD I; 0x05 NO OBD; 0x06 EOBD; 0x07 EOBD and OBD II; 0x08 EOBD and OBD; 0x09 EOBD,OBD and OBD II; 0x0A JOBD; 0x0B JOBD and OBD II; 0x0C JOBD and EOBD; 0x0D JOBD,EOBD,and OBD II; 0x0E EURO IV B1; 0x0F EURO V B2; 0x10 EURO C; 0x11 EMD; 0x12 SAE J1939; 其他
    private double vol;   //  Double  外部车载蓄电池的电压 (V)
    private long rpm;     //  Long    动机当前转速  单位 转/分钟
    private double speed; //  Double   速度 (km/h)
    private int inTemp;   //  int     进气口温度(实际范围-40~215摄氏度) -100表示未知

    private int coolTemp; //  int    发动机冷却液温度  摄氏度   如小于0（如-1）则代表不可知
    private int enTemp;   //  int     车辆环境温度(实际范围-40~215摄氏度) -100表示未知
    private int inPres;   //  int     kpa 进气歧管压力  10~105kpa
    private int fuelPres; //  int    kPa 燃油压力
    private int baroPres; //  int    kPa 大气压力

    private double airFlow; //  Double  g/s 空气流量 -1表示未知
    private double throtle; //  Double  % 绝对节气门位置传感器 -1表示未知
    private double pedalPos; // Double  % 油门踏板位置， 0~100 -1表示未知
    private long runTime; //  Long   Sec 发动机启动后运行时间
    private long malMile;   //  Long   km  故障行驶里程 -1表示未知

    private double oilMass; //  Double  L/% 剩余油量，单位L或% OBD都为百分比 -1表示未知
    private int load;       //     int     %   发动机负荷，   0~100
    private double fuelTrim; // Double  %   长期燃油修正(组1) 显示值为上传值/10
    private double sparkAng; // Double  °   点火提前角 显示值为(上传值/10)-64
    private long panelMile;  // long  仪表盘里程，单位

    private int tireLF; //   int     Kpa 左前胎压
    private int tireRF; //   int     Kpa 右前胎压
    private int tireLB; //   int     Kpa 左后胎压
    private int tireRB; //   int     Kpa 右后胎压
    private int mileType; // int     总里程类型 1 汽车里程;2 OBD里程;3 GPS里程  -1表示未知

    private long mileage; //  long    行驶里程,上传值单位为m(米)
    private long fuelCon; //  long    总的燃油消耗量,上传值单位为ml(毫升)
    private Date rectm;   //    Date    保存数据的时间
    private String gwid="default";    // String  网关id
    private int type;       //    int     设备类型号
    """

    results = EntityMapper.parse(str)
    for item in results :
        #toEntity(item)
        #print(item)
        #toDocument(item)
        #toUpdateDoc(item)
        toGpsStr(item)
